home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / PRG / Mac_F2C_1.3.2.sit / Mac F2C 1.3.2 / Mac F2C Libraries / libI77 Sources / README < prev    next >
Text File  |  1995-01-28  |  8KB  |  182 lines

  1. If your compiler does not recognize ANSI C headers,
  2. compile with KR_headers defined:  either add -DKR_headers
  3. to the definition of CFLAGS in the makefile, or insert
  4.  
  5. #define KR_headers
  6.  
  7. at the top of f2c.h and fmtlib.c .
  8.  
  9.  
  10. If you have a really ancient K&R C compiler that does not understand
  11. void, add -Dvoid=int to the definition of CFLAGS in the makefile.
  12.  
  13. If you use a C++ compiler, first create a local f2c.h by appending
  14. f2ch.add to the usual f2c.h, e.g., by issuing the command
  15.     make f2c.h
  16. which assumes f2c.h is installed in /usr/include .
  17.  
  18. If your system lacks /usr/include/fcntl.h , then you
  19. should simply create an empty fcntl.h in this directory.
  20. If your compiler then complains about creat and open not
  21. having a prototype, compile with OPEN_DECL defined.
  22. On many systems, open and creat are declared in fcntl.h .
  23.  
  24. If your system has /usr/include/fcntl.h, you may need to add
  25. -D_POSIX_SOURCE to the makefile's definition of CFLAGS.
  26.  
  27. If your system's sprintf does not work the way ANSI C
  28. specifies -- specifically, if it does not return the
  29. number of characters transmitted -- then insert the line
  30.  
  31. #define USE_STRLEN
  32.  
  33. at the end of fmt.h .  This is necessary with
  34. at least some versions of Sun and DEC software.
  35.  
  36. If your system's fopen does not like the ANSI binary
  37. reading and writing modes "rb" and "wb", then you should
  38. compile open.c with NON_ANSI_RW_MODES #defined.
  39.  
  40. If you get error messages about references to cf->_ptr
  41. and cf->_base when compiling wrtfmt.c and wsfe.c or to
  42. stderr->_flag when compiling err.c, then insert the line
  43.  
  44. #define NON_UNIX_STDIO
  45.  
  46. at the beginning of fio.h, and recompile everything (or
  47. at least those modules that contain NON_UNIX_STDIO).
  48.  
  49. Unformatted sequential records consist of a length of record
  50. contents, the record contents themselves, and the length of
  51. record contents again (for backspace).  Prior to 17 Oct. 1991,
  52. the length was of type int; now it is of type long, but you
  53. can change it back to int by inserting
  54.  
  55. #define UIOLEN_int
  56.  
  57. at the beginning of fio.h.  This affects only sue.c and uio.c .
  58.  
  59. On VAX, Cray, or Research Tenth-Edition Unix systems, you may
  60. need to add -DVAX, -DCRAY, or -DV10 (respectively) to CFLAGS
  61. to make fp.h work correctly.  Alternatively, you may need to
  62. edit fp.h to suit your machine.
  63.  
  64. You may need to supply the following non-ANSI routines:
  65.  
  66.   fstat(int fileds, struct stat *buf) is similar
  67. to stat(char *name, struct stat *buf), except that
  68. the first argument, fileds, is the file descriptor
  69. returned by open rather than the name of the file.
  70. fstat is used in the system-dependent routine
  71. canseek (in the libI77 source file err.c), which
  72. is supposed to return 1 if it's possible to issue
  73. seeks on the file in question, 0 if it's not; you may
  74. need to suitably modify err.c .  On non-UNIX systems,
  75. you can avoid references to fstat and stat by compiling
  76. with NON_UNIX_STDIO defined; in that case, you may need
  77. to supply access(char *Name,0), which is supposed to
  78. return 0 if file Name exists, nonzero otherwise.
  79.  
  80.   char * mktemp(char *buf) is supposed to replace the
  81. 6 trailing X's in buf with a unique number and then
  82. return buf.  The idea is to get a unique name for
  83. a temporary file.
  84.  
  85. On non-UNIX systems, you may need to change a few other,
  86. e.g.: the form of name computed by mktemp() in endfile.c and
  87. open.c; the use of the open(), close(), and creat() system
  88. calls in endfile.c, err.c, open.c; and the modes in calls on
  89. fopen() and fdopen() (and perhaps the use of fdopen() itself
  90. -- it's supposed to return a FILE* corresponding to a given
  91. an integer file descriptor) in err.c and open.c (component ufmt
  92. of struct unit is 1 for formatted I/O -- text mode on some systems
  93. -- and 0 for unformatted I/O -- binary mode on some systems).
  94. Compiling with -DNON_UNIX_STDIO omits all references to creat()
  95. and almost all references to open() and close(), the exception
  96. being in the function f__isdev() (in open.c).
  97.  
  98. For MS-DOS, compile all of libI77 with -DMSDOS (which implies
  99. -DNON_UNIX_STDIO).  You may need to make other compiler-dependent
  100. adjustments; for example, for Turbo C++ you need to adjust the mktemp
  101. invocations and to #undef ungetc in lread.c and rsne.c .
  102.  
  103. If you want to be able to load against libI77 but not libF77,
  104. then you will need to add sig_die.o (from libF77) to libI77.
  105.  
  106. If you wish to use translated Fortran that has funny notions
  107. of record length for direct unformatted I/O (i.e., that assumes
  108. RECL= values in OPEN statements are not bytes but rather counts
  109. of some other units -- e.g., 4-character words for VMS), then you
  110. should insert an appropriate #define for url_Adjust at the
  111. beginning of open.c .  For VMS Fortran, for example,
  112. #define url_Adjust(x) x *= 4
  113. would suffice.
  114.  
  115. To check for transmission errors, issue the command
  116.     make check
  117. This assumes you have the xsum program whose source, xsum.c,
  118. is distributed as part of "all from f2c/src".  If you do not
  119. have xsum, you can obtain xsum.c by sending the following E-mail
  120. message to netlib@research.att.com
  121.     send xsum.c from f2c/src
  122.  
  123. The makefile assumes you have installed f2c.h in a standard
  124. place (and does not cause recompilation when f2c.h is changed);
  125. f2c.h comes with "all from f2c" (the source for f2c) and is
  126. available separately ("f2c.h from f2c").
  127.  
  128. By default, Fortran I/O units 5, 6, and 0 are pre-connected to
  129. stdin, stdout, and stderr, respectively.  You can change this
  130. behavior by changing f_init() in err.c to suit your needs.
  131. Note that f2c assumes READ(*... means READ(5... and WRITE(*...
  132. means WRITE(6... .  Moreover, an OPEN(n,... statement that does
  133. not specify a file name (and does not specify STATUS='SCRATCH')
  134. assumes FILE='fort.n' .  You can change this by editing open.c
  135. and endfile.c suitably.
  136.  
  137. Lines protected from compilation by #ifdef Allow_TYQUAD
  138. are for a possible extension to 64-bit integers in which
  139. integer = int = 32 bits and longint = long = 64 bits.
  140.  
  141. Extensions (Feb. 1993) to NAMELIST processing:
  142.  1. Reading a ? instead of &name (the start of a namelist) causes
  143. the namelist being sought to be written to stdout (unit 6);
  144. to omit this feature, compile rsne.c with -DNo_Namelist_Questions.
  145.  2. Reading the wrong namelist name now leads to an error message
  146. and an attempt to skip input until the right namelist name is found;
  147. to omit this feature, compile rsne.c with -DNo_Bad_Namelist_Skip.
  148.  3. Namelist writes now insert newlines before each variable; to omit
  149. this feature, compile xwsne.c with -DNo_Extra_Namelist_Newlines.
  150.  
  151. Nonstandard extension (Feb. 1993) to open: for sequential files,
  152. ACCESS='APPEND' (or access='anything else starting with "A" or "a"')
  153. causes the file to be positioned at end-of-file, so a write will
  154. append to the file.
  155.  
  156. Some buggy Fortran programs use unformatted direct I/O to write
  157. an incomplete record and later read more from that record than
  158. they have written.  For records other than the last, the unwritten
  159. portion of the record reads as binary zeros.  The last record is
  160. a special case: attempting to read more from it than was written
  161. gives end-of-file -- which may help one find a bug.  Some other
  162. Fortran I/O libraries treat the last record no differently than
  163. others and thus give no help in finding the bug of reading more
  164. than was written.  If you wish to have this behavior, compile
  165. uio.c with -DPad_UDread .
  166.  
  167. If you want to be able to catch write failures (e.g., due to a
  168. disk being full) with an ERR= specifier, compile dfe.c, due.c,
  169. sfe.c, sue.c, and wsle.c with -DALWAYS_FLUSH.  This will lead to
  170. slower execution and more I/O, but should make ERR= work as
  171. expected, provided fflush returns an error return when its
  172. physical write fails.
  173.  
  174.  
  175. Carriage controls are meant to be interpreted by the UNIX col
  176. program (or a similar program).  Sometimes it's convenient to use
  177. only ' ' as the carriage control character (normal single spacing).
  178. If you compile lwrite.c and wsfe.c with -DOMIT_BLANK_CC, formatted
  179. external output lines will have an initial ' ' quietly omitted,
  180. making use of the col program unnecessary with output that only
  181. has ' ' for carriage control.
  182.